/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

/**
 *
 * @author benoit
 */
public class Trajet extends AppelAscenseur {
    private int ascenseur;
    private Etage etageInitial; // Etage où l'ascenseur se trouve au moment de l'appel
    private Date heureArrivee;
    private Date heureArriveEtageDepart;
    private int energieConsommee;
    private int sensTrajet;
    
    /* Constantes qui définissent le sens du trajet */
    public static final int MONTE = 10;
    public static final int DESCEND = 20;

    public Trajet(AppelAscenseur appelAscenseur,int ascenseur, Etage etageInitial) {
        super(appelAscenseur.getEtageDepart(), appelAscenseur.getEtageArrive(), appelAscenseur.getHeureDemande(), appelAscenseur.getNbrPersonne(), appelAscenseur.getAppelant(), appelAscenseur.getAlgorithmeUtilise());
        this.ascenseur = ascenseur;
        this.energieConsommee = 0;
        this.etageInitial = etageInitial;
        this.heureArriveEtageDepart = null;
        this.heureArrivee = null;
        if(appelAscenseur.getEtageDepart().getNumero() < appelAscenseur.getEtageArrive().getNumero()) {
            sensTrajet = MONTE;
        } else if(appelAscenseur.getEtageDepart().getNumero() > appelAscenseur.getEtageArrive().getNumero()) {
            sensTrajet = DESCEND;
        } else {
            throw new IllegalArgumentException("L'appel d'ascenseur ne possède pas de sens car EtageDepart=EtageArrive");
        }
    }
    
    public int getAscenseur() {
        return ascenseur;
    }
    
    public Date getHeureArrivee() {
        return heureArrivee;
    }

    public void setHeureArrivee(Date heureArrivee) {
        this.heureArrivee = heureArrivee;
    }

    public int getEnergieConsommee() {
        return energieConsommee;
    }

    public void setEnergieConsommee(int energieConsommee) {
        this.energieConsommee = energieConsommee;
    }
    
    public int getSensTrajet() {
        return sensTrajet;
    }

    public Etage getEtageInitial() {
        return etageInitial;
    }

    public void setEtageInitial(Etage etageInitial) {
        this.etageInitial = etageInitial;
    }

    public Date getHeureArriveEtageDepart() {
        return heureArriveEtageDepart;
    }

    public void setHeureArriveEtageDepart(Date heureArriveEtageDepart) {
        this.heureArriveEtageDepart = heureArriveEtageDepart;
    }

    public void incrementerEnergieConsommee(int n) {
        this.energieConsommee += n;
    }
}
